Stored Procedures এবং Functions হল SQL কোড ব্লক যা ডেটাবেজে সংরক্ষিত থাকে এবং নির্দিষ্ট কার্যক্রম সম্পাদন করার জন্য ব্যবহৃত হয়। এগুলি ডেটাবেজের ভেতরে কোড রান করতে পারে, সুতরাং, ক্লায়েন্ট অ্যাপ্লিকেশনগুলিকে ডেটাবেজের মধ্যে অ্যাক্সেসের জন্য কম সংখ্যক বার্তা পাঠানোর প্রয়োজন হয়, যা পারফরম্যান্স উন্নত করতে সাহায্য করে। H2 Database-এ Stored Procedures এবং Functions উভয়ই কার্যকরী এবং ব্যবহারে সহজ।
এই টিউটোরিয়ালে আমরা Stored Procedures এবং Functions এর মৌলিক ধারণা, ব্যবহার এবং উদাহরণ নিয়ে আলোচনা করব।
Stored Procedure হল SQL কোডের একটি ব্লক যা ডেটাবেজে সংরক্ষিত থাকে এবং একাধিক SQL স্টেটমেন্ট সম্পাদন করার জন্য ব্যবহৃত হয়। এটি ডেটাবেজে চালানো যেকোনো ক্রিয়া বা কার্যক্রম (যেমন: ডেটা আপডেট, ইনসার্ট, ডিলিট) একটি একক ইউনিট হিসেবে সংরক্ষণ করতে সাহায্য করে। Stored Procedure তৈরি এবং এক্সিকিউট করা সহজ, এবং এগুলি সাধারণত কিছু প্যারামিটার গ্রহণ করে থাকে।
H2 ডেটাবেজে Stored Procedure তৈরি করতে CREATE PROCEDURE
বা CREATE ALIAS
স্টেটমেন্ট ব্যবহার করা হয়।
CREATE PROCEDURE procedure_name
(param1 datatype, param2 datatype)
BEGIN
-- SQL statements
END;
একবার Stored Procedure তৈরি হলে, আপনি CALL
কমান্ডের মাধ্যমে এটি কল করতে পারেন।
CALL procedure_name(param1, param2);
ধরা যাক, আমাদের একটি users
টেবিল আছে এবং আমরা একটি Stored Procedure তৈরি করতে চাই, যা users
টেবিলে একটি নতুন ইউজার যোগ করবে।
CREATE PROCEDURE AddUser (id INT, name VARCHAR, age INT)
BEGIN
INSERT INTO users (id, name, age) VALUES (?, ?, ?);
END;
এখন, এই Stored Procedure কল করতে:
CALL AddUser(1, 'Alice', 25);
এটি users
টেবিলে একটি নতুন ইউজার যোগ করবে যার id = 1
, name = 'Alice'
, এবং age = 25
।
Function হল একটি SQL কোড ব্লক যা কোনও বিশেষ কাজ সম্পাদন করে এবং একটি মান (ভ্যালু) রিটার্ন করে। ফাংশনগুলি সাধারণত SELECT কুয়েরির মধ্যে ব্যবহৃত হয় এবং একাধিক অপারেশন সম্পাদন করার সময় একটি ফলাফল প্রদান করে। ফাংশন শুধুমাত্র একটি মান রিটার্ন করতে পারে এবং এটি SQL কুয়েরির অংশ হিসেবে ব্যবহৃত হতে পারে।
H2 ডেটাবেজে Function তৈরি করতে CREATE FUNCTION
ব্যবহার করা হয়:
CREATE FUNCTION function_name (param1 datatype, param2 datatype)
RETURNS return_datatype
AS
BEGIN
-- SQL statements
RETURN result;
END;
ফাংশনটি কল করতে, সাধারণত এটি একটি SQL কুয়েরির অংশ হিসেবে ব্যবহৃত হয়:
SELECT function_name(param1, param2);
ধরা যাক, আমাদের একটি users
টেবিল আছে এবং আমরা একটি ফাংশন তৈরি করতে চাই যা ইউজারের id
প্রদান করলে, তার নাম রিটার্ন করবে।
CREATE FUNCTION GetUserName (id INT) RETURNS VARCHAR AS
BEGIN
DECLARE user_name VARCHAR;
SELECT name INTO user_name FROM users WHERE id = id;
RETURN user_name;
END;
এখন, এই ফাংশনটি কল করতে:
SELECT GetUserName(1);
এটি users
টেবিল থেকে id = 1
এর জন্য নাম রিটার্ন করবে।
বৈশিষ্ট্য | Stored Procedure | Function |
---|---|---|
রিটার্ন ভ্যালু | রিটার্ন ভ্যালু থাকতে পারে না | একটি রিটার্ন ভ্যালু থাকে |
ব্যবহার | একাধিক SQL অপারেশন সম্পাদন করতে ব্যবহৃত | শুধুমাত্র একটি মান রিটার্ন করতে ব্যবহৃত |
SQL কুয়েরির অংশ | SQL কুয়েরির অংশ হতে পারে না | SQL কুয়েরির অংশ হিসেবে ব্যবহৃত হতে পারে |
কল করার পদ্ধতি | CALL বা EXECUTE দিয়ে কল করা হয় | সাধারণত SELECT বা INSERT কুয়েরি-তে ব্যবহার করা হয় |
অপারেশন | একাধিক SQL অপারেশন যেমন ইনসার্ট, আপডেট, ডিলিট ইত্যাদি সম্পাদন করে | শুধুমাত্র একটি মান রিটার্ন করতে ব্যবহৃত |
এখানে একটি Stored Procedure তৈরি করা হচ্ছে যা একটি ইউজারকে আপডেট করবে:
CREATE PROCEDURE UpdateUser (id INT, name VARCHAR, age INT)
BEGIN
UPDATE users SET name = ?, age = ? WHERE id = ?;
END;
এটি কল করতে:
CALL UpdateUser(1, 'John Doe', 35);
এখানে একটি Function তৈরি করা হচ্ছে যা ইউজারের বয়স ফেরত দেবে:
CREATE FUNCTION GetUserAge (id INT) RETURNS INT AS
BEGIN
DECLARE user_age INT;
SELECT age INTO user_age FROM users WHERE id = id;
RETURN user_age;
END;
এটি কল করতে:
SELECT GetUserAge(1);
H2 ডেটাবেজে Stored Procedures এবং Functions ডেটাবেজ অপারেশনগুলোকে আরও মডুলার, পুনরায় ব্যবহারযোগ্য এবং কার্যকরী করতে সাহায্য করে। এগুলি পারফরম্যান্স উন্নত করতে সহায়ক এবং ডেটাবেজের মধ্যে নির্দিষ্ট কার্যক্রমের জন্য একটি নির্ভরযোগ্য উপায় সরবরাহ করে। Stored Procedures এবং Functions ডেটাবেজের ACID বৈশিষ্ট্য নিশ্চিত করে এবং কোডের পরিষ্কারতা বজায় রাখে।
H2 ডেটাবেজে Stored Procedures তৈরি করা একটি শক্তিশালী পদ্ধতি যা ডেটাবেজের মধ্যে বিভিন্ন SQL অপারেশন একত্রিত করে একটি নির্দিষ্ট কাজ সম্পাদন করতে সাহায্য করে। Stored Procedures ডেটাবেজে সংরক্ষিত থাকে এবং একাধিক SQL অপারেশন সমন্বিতভাবে একসাথে কাজ করতে পারে। এতে কোড পুনরায় ব্যবহারযোগ্যতা বাড়ে এবং ডেটাবেজের পারফরম্যান্সও উন্নত হয়।
H2 তে Stored Procedure তৈরি করার জন্য CREATE PROCEDURE
কমান্ড ব্যবহার করা হয়।
Stored Procedure হল একটি প্রি-ডিফাইনড SQL কোড ব্লক, যা ডেটাবেজে সংরক্ষিত থাকে এবং একটি নির্দিষ্ট কাজ বা লজিক সম্পাদন করে। এটি ডেটাবেজের মধ্যে একাধিক SQL অপারেশন বা জটিল লজিক রক্ষা করার জন্য ব্যবহৃত হয়। একবার তৈরি হওয়ার পর, এটি সহজে কল করা যায় এবং পুনরায় ব্যবহৃত হতে পারে।
H2 ডেটাবেজে Stored Procedures তৈরি করার জন্য CREATE PROCEDURE
কমান্ড ব্যবহার করা হয়, এবং তারপর আপনি সেই procedure টি CALL স্টেটমেন্ট দিয়ে কল করতে পারেন।
H2 ডেটাবেজে Stored Procedure তৈরি করতে নিচের পদ্ধতি অনুসরণ করতে পারেন:
ধরা যাক, আমরা একটি Stored Procedure তৈরি করতে চাই যা একটি টেবিল users
তে নতুন ইউজার যোগ করবে।
CREATE PROCEDURE AddUser(id INT, name VARCHAR, age INT)
BEGIN
INSERT INTO users (id, name, age) VALUES (id, name, age);
END;
এখানে:
AddUser
: Stored Procedure এর নাম।id
, name
, age
: এই প্যারামিটারগুলি প্রক্রিয়া চলাকালীন ব্যবহারকারী থেকে ইনপুট হিসেবে নেওয়া হবে।INSERT INTO users (id, name, age)
: এটি users
টেবিলে নতুন রেকর্ড ইনসার্ট করার SQL কোড।এবার এই Stored Procedure কল করতে হলে CALL
কিওয়ার্ড ব্যবহার করা হবে। এর মাধ্যমে আপনি সেই procedure টি কল করতে পারবেন এবং প্যারামিটার পাস করতে পারবেন।
CALL AddUser(1, 'John Doe', 30);
এটি users
টেবিলে id = 1
, name = 'John Doe'
, এবং age = 30
সহ একটি নতুন রেকর্ড ইনসার্ট করবে।
Stored Procedure তে আপনি Error Handling, Conditions, এবং Loops ইত্যাদি যুক্ত করতে পারেন। যেমন:
CREATE PROCEDURE AddUserWithCheck(id INT, name VARCHAR, age INT)
BEGIN
-- চেক করুন যে, ইউজারের বয়স 18 বছরের বেশি কিনা
IF age >= 18 THEN
INSERT INTO users (id, name, age) VALUES (id, name, age);
ELSE
-- যদি বয়স 18 বছরের কম হয়, ত则 একটি error ফেলে দিন
THROW 'Age must be 18 or older.';
END IF;
END;
এখানে:
IF age >= 18 THEN
: যদি ইউজারের বয়স 18 বছরের বেশি হয়, তবে ইউজারকে ইনসার্ট করা হবে।THROW 'Age must be 18 or older.'
: যদি বয়স 18 বছরের কম হয়, তবে একটি ত্রুটি (error) ফেলে দেওয়া হবে।Stored Procedure-এ একাধিক SQL কুয়েরি বা স্টেটমেন্ট থাকতে পারে। উদাহরণস্বরূপ:
CREATE PROCEDURE UpdateUserAge(id INT, newAge INT)
BEGIN
UPDATE users SET age = newAge WHERE id = id;
SELECT * FROM users WHERE id = id;
END;
এই প্রোসিজারটি দুটি স্টেটমেন্ট একসাথে এক্সিকিউট করবে:
age
আপডেট করবে।users
রেকর্ডটি ফেরত দেবে।আপনি Stored Procedures এ Parameterized Queries ব্যবহার করতে পারেন, যাতে SQL ইনজেকশন (SQL Injection) প্রতিরোধ করা যায়।
CREATE PROCEDURE GetUserByName(name VARCHAR)
BEGIN
SELECT * FROM users WHERE name = name;
END;
এখানে:
name
: এই প্যারামিটারটি SQL কুয়েরির মধ্যে নিরাপদে ইনপুট হিসেবে ব্যবহৃত হবে।ডিবাগিং: যদি আপনার Stored Procedure তে কোনো সমস্যা হয়, তবে আপনি SHOW PROCEDURES
কমান্ড ব্যবহার করে সমস্ত Stored Procedure দেখতে পারেন এবং DESCRIBE PROCEDURE
ব্যবহার করে নির্দিষ্ট একটি procedure এর বিস্তারিত দেখতে পারেন।
উদাহরণ:
SHOW PROCEDURES;
CALL
কমান্ড দিয়ে এটি পরীক্ষা করতে পারেন।CREATE PROCEDURE TransferMoney(sender INT, receiver INT, amount DECIMAL)
BEGIN
UPDATE accounts SET balance = balance - amount WHERE id = sender;
UPDATE accounts SET balance = balance + amount WHERE id = receiver;
COMMIT;
END;
H2 ডেটাবেজে Stored Procedures তৈরি এবং ব্যবহারের মাধ্যমে আপনি একাধিক SQL অপারেশনকে একত্রিত করতে পারেন এবং একটি নির্দিষ্ট কাজ সম্পাদন করতে পারেন। এটি ডেটাবেজ পরিচালনা সহজ এবং দ্রুত করে তোলে, কারণ একবার তৈরি হওয়া Stored Procedures বারবার ব্যবহার করা যেতে পারে। SQL কোডের পুনরায় ব্যবহারযোগ্যতা বৃদ্ধি পায় এবং এর মাধ্যমে লজিক প্রক্রিয়া ডেটাবেজের মধ্যে সংরক্ষণ করা হয়।
Functions হল ডেটাবেজে ব্যবহৃত প্রোগ্রামেবল কোডের ব্লক যা নির্দিষ্ট কাজ সম্পাদন করে এবং নির্দিষ্ট ফলাফল প্রদান করে। H2 ডেটাবেজে, ফাংশনগুলি ব্যবহৃত হয় ডেটাবেজ অপারেশনের মধ্যে পুনরাবৃত্তি কাজে ব্যবহৃত অ্যালগোরিদমগুলিকে সহজ ও কার্যকরীভাবে পরিচালনা করার জন্য। ফাংশন সাধারণত কিছু ইনপুট গ্রহণ করে এবং একটি আউটপুট প্রদান করে।
H2 ডেটাবেজে ফাংশন দুটি প্রধানভাবে ব্যবহার করা হয়:
H2 ডেটাবেজে কিছু পূর্বনির্ধারিত ফাংশন রয়েছে, যেগুলি বিভিন্ন ডেটাবেজ অপারেশন সহজতর করতে ব্যবহৃত হয়। এই ফাংশনগুলি সাধারণত SQL কুয়েরি অথবা স্টোরড প্রোসিডিউরের মধ্যে ব্যবহার করা হয়।
CONCAT(str1, str2)
: দুটি স্ট্রিং একত্রিত করে।
SELECT CONCAT('Hello ', 'World');
-- Output: Hello World
UPPER(str)
: স্ট্রিংকে বড় অক্ষরে রূপান্তরিত করে।
SELECT UPPER('hello');
-- Output: HELLO
LOWER(str)
: স্ট্রিংকে ছোট অক্ষরে রূপান্তরিত করে।
SELECT LOWER('HELLO');
-- Output: hello
ABS(x)
: একটি সংখ্যার পরম মান প্রদান করে।
SELECT ABS(-5);
-- Output: 5
ROUND(x, d)
: একটি সংখ্যাকে নির্দিষ্ট দশমিক স্থানে রাউন্ড করে।
SELECT ROUND(123.456, 2);
-- Output: 123.46
CEIL(x)
: একটি সংখ্যা সর্বনিম্ন পূর্ণসংখ্যায় রাউন্ড করে।
SELECT CEIL(4.3);
-- Output: 5
FLOOR(x)
: একটি সংখ্যা সর্বোচ্চ পূর্ণসংখ্যায় রাউন্ড করে।
SELECT FLOOR(4.7);
-- Output: 4
CURRENT_DATE
: বর্তমান তারিখ প্রদান করে।
SELECT CURRENT_DATE;
-- Output: 2024-11-27
CURRENT_TIMESTAMP
: বর্তমান তারিখ এবং সময় প্রদান করে।
SELECT CURRENT_TIMESTAMP;
-- Output: 2024-11-27 12:30:45
DATEADD(interval, value, date)
: একটি নির্দিষ্ট তারিখের সাথে নির্দিষ্ট সময় যোগ করে।
SELECT DATEADD('DAY', 5, '2024-11-27');
-- Output: 2024-12-02
User-defined Functions (UDFs) হলো এমন ফাংশন যা ব্যবহারকারী নিজের প্রয়োজন অনুযায়ী তৈরি করতে পারেন। H2 ডেটাবেজে আপনি CREATE FUNCTION
কমান্ড ব্যবহার করে একটি ফাংশন তৈরি করতে পারেন। ব্যবহারকারীরা নির্দিষ্ট কাজে ফাংশনগুলো কাস্টমাইজ করে ডেটাবেজের সঙ্গে একীভূত করতে পারেন।
ধরা যাক, একটি ফাংশন তৈরি করতে চান যা দুটি পূর্ণসংখ্যার যোগফল প্রদান করবে।
CREATE FUNCTION add_numbers(num1 INT, num2 INT)
RETURNS INT AS
BEGIN
RETURN num1 + num2;
END;
এই ফাংশনটি দুটি পূর্ণসংখ্যার ইনপুট নেবে এবং তাদের যোগফল প্রদান করবে।
একবার ফাংশন তৈরি হলে, আপনি এটি SQL কুয়েরিতে ব্যবহার করতে পারবেন যেমন:
SELECT add_numbers(5, 10);
-- Output: 15
এখানে, add_numbers(5, 10)
ফাংশনটি 5 এবং 10 এর যোগফল প্রদান করবে।
H2 ডেটাবেজে Functions শক্তিশালী টুল হিসেবে কাজ করে, যা আপনাকে কাস্টম কোড ব্লক তৈরি করতে এবং ডেটাবেজ অপারেশনকে আরও কার্যকরী ও পুনরায় ব্যবহারযোগ্য করে তোলে। Built-in Functions দিয়ে সাধারণ কাজগুলো দ্রুত সমাধান করা সম্ভব, আর User-defined Functions (UDFs) ব্যবহার করে আপনি ডেটাবেজে আরো কাস্টম কার্যক্ষমতা যোগ করতে পারেন।
Stored Procedures হল SQL কোডের একটি সংগ্রহ, যা ডেটাবেজে সংরক্ষিত থাকে এবং পরে একাধিকবার ব্যবহার করা যায়। এটি SQL কুয়েরি বা লজিকের পুনঃব্যবহারযোগ্য ব্লক যা ডেটাবেজে রাখা হয় এবং যখন প্রয়োজন তখন কল করা হয়। Stored Procedures ব্যবহারের মাধ্যমে ডেটাবেজের কাজগুলো আরও কার্যকরী, দ্রুত এবং নিরাপদ করা সম্ভব।
H2 ডেটাবেজে Stored Procedures ব্যবহার করা সহজ এবং এটি SQL কুয়েরি বা অপারেশনগুলোকে পুনঃব্যবহারযোগ্য, কার্যকরী এবং মডুলার করে তোলে।
H2 ডেটাবেজে একটি Stored Procedure তৈরি করতে CREATE PROCEDURE
কমান্ড ব্যবহার করা হয়।
CREATE PROCEDURE procedure_name (parameters)
LANGUAGE SQL
AS
BEGIN
-- SQL কোড বা লজিক
END;
ধরা যাক, আপনার একটি students
টেবিল আছে এবং আপনি এই টেবিলের সকল ছাত্রদের নাম এবং গ্রেড দেখতে চান। আপনি এই কাজটি করতে একটি Stored Procedure তৈরি করতে পারেন।
CREATE PROCEDURE getAllStudents()
LANGUAGE SQL
AS
BEGIN
SELECT name, grade
FROM students;
END;
এই Stored Procedure-টি যখন কল করা হবে, তখন এটি students
টেবিল থেকে ছাত্রদের নাম এবং গ্রেড রিটার্ন করবে।
CALL getAllStudents();
এটি students
টেবিল থেকে ছাত্রদের নাম এবং গ্রেড বের করবে।
ধরা যাক, আপনি একটি students
টেবিলের মধ্যে শুধুমাত্র নির্দিষ্ট গ্রেডের ছাত্রদের তথ্য দেখতে চান। এর জন্য আপনি প্যারামিটার সহ একটি Stored Procedure তৈরি করতে পারেন।
CREATE PROCEDURE getStudentsByGrade(grade_param VARCHAR)
LANGUAGE SQL
AS
BEGIN
SELECT name, age, grade
FROM students
WHERE grade = grade_param;
END;
এখানে, grade_param
হল প্যারামিটার যা প্রোসিজার কল করার সময় পাস করা হবে। এই প্রোসিজারটি শুধুমাত্র সেই ছাত্রদের দেখাবে যাদের গ্রেড প্যারামিটার হিসাবে পাস করা হবে।
CALL getStudentsByGrade('A');
এটি সমস্ত ছাত্রদের রিটার্ন করবে যাদের গ্রেড 'A'।
ধরা যাক, আপনি ছাত্রদের তথ্য ইনসার্ট করতে একটি Stored Procedure তৈরি করতে চান। আপনি একটি students
টেবিলের জন্য INSERT
অপারেশন করতে পারেন।
CREATE PROCEDURE insertStudent(name_param VARCHAR, age_param INT, grade_param VARCHAR)
LANGUAGE SQL
AS
BEGIN
INSERT INTO students (name, age, grade)
VALUES (name_param, age_param, grade_param);
END;
এই প্রোসিজারটি একটি নতুন ছাত্রের নাম, বয়স এবং গ্রেড টেবিলে ইনসার্ট করবে।
CALL insertStudent('John Doe', 22, 'B');
এটি students
টেবিলে একটি নতুন ছাত্রের তথ্য ইনসার্ট করবে।
CREATE PROCEDURE updateStudentGrade(id_param INT, new_grade_param VARCHAR)
LANGUAGE SQL
AS
BEGIN
UPDATE students
SET grade = new_grade_param
WHERE student_id = id_param;
END;
এই প্রোসিজারটি একটি নির্দিষ্ট ছাত্রের গ্রেড আপডেট করবে।
CALL updateStudentGrade(1, 'A');
এটি student_id = 1
এর গ্রেড আপডেট করে 'A' করবে।
CREATE PROCEDURE deleteStudent(id_param INT)
LANGUAGE SQL
AS
BEGIN
DELETE FROM students
WHERE student_id = id_param;
END;
এই প্রোসিজারটি নির্দিষ্ট ছাত্রের রেকর্ড ডিলিট করবে।
CALL deleteStudent(1);
এটি student_id = 1
এর ছাত্রের তথ্য মুছে ফেলবে।
H2 ডেটাবেজে Stored Procedures ব্যবহার ডেটাবেজ পরিচালনার এবং ডেটা ম্যানিপুলেশনের একটি শক্তিশালী উপায়। এটি ডেটাবেজ কুয়েরি বা অপারেশনগুলিকে পুনঃব্যবহারযোগ্য এবং নিরাপদ করে তোলে, এবং ডেটাবেজের কর্মক্ষমতা বাড়ানোর জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে।
H2 ডেটাবেজে Triggers এবং Views দুটি অত্যন্ত গুরুত্বপূর্ণ বৈশিষ্ট্য, যা ডেটাবেজের কার্যকারিতা এবং প্রক্রিয়া স্বয়ংক্রিয়ভাবে নিয়ন্ত্রণ করতে সাহায্য করে। এগুলি ডেটাবেজ অপারেশনগুলি আরও কার্যকরী, সুনির্দিষ্ট এবং সংগঠিত করতে সহায়ক।
Triggers হল অটো-এক্সিকিউটিং প্রোগ্রাম বা স্টোরড প্রসিজার যা ডেটাবেজে নির্দিষ্ট ইভেন্ট বা অপারেশন (যেমন INSERT
, UPDATE
, DELETE
) ঘটলে চালু হয়। যখন কোনো নির্দিষ্ট শর্ত পূর্ণ হয়, তখন ট্রিগারটি স্বয়ংক্রিয়ভাবে চালিত হয়। এটি ডেটাবেজে ডেটার ইন্টিগ্রিটি বজায় রাখতে এবং নির্দিষ্ট কাজগুলো অটোমেট করতে ব্যবহৃত হয়।
CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_name
FOR EACH ROW
BEGIN
-- Trigger Logic Here
END;
trigger_name
: ট্রিগারের নাম।INSERT | UPDATE | DELETE
: কোন ধরনের অপারেশনের জন্য ট্রিগারটি তৈরি করা হবে।table_name
: যে টেবিলের উপর ট্রিগারটি কার্যকর হবে।FOR EACH ROW
: প্রতিটি রেকর্ডের জন্য ট্রিগারটি কার্যকর হবে।ধরা যাক, আমাদের একটি students
টেবিল আছে, যেখানে ছাত্রদের তথ্য রয়েছে। আমরা চাই যে, যখন একটি নতুন ছাত্রের ডেটা INSERT
হবে, তখন তার নামের সাথে একটি সেল্যুলার নম্বর যোগ হয়ে যাক। এটি করতে একটি BEFORE INSERT
ট্রিগার ব্যবহার করা যাবে:
CREATE TRIGGER add_phone_number
BEFORE INSERT ON students
FOR EACH ROW
BEGIN
SET NEW.phone_number = '000-000-0000';
END;
এই ট্রিগারটি প্রত্যেকবার একটি নতুন ছাত্রের তথ্য ইনসার্ট করার আগে তার ফোন নম্বর সেট করবে।
Views হল ভার্চুয়াল টেবিল যা একটি অথবা একাধিক টেবিল থেকে ডেটা নিয়ে একটি কুয়েরির মাধ্যমে তৈরি করা হয়। এটি ডেটাবেজে সরাসরি সংরক্ষণ না হওয়া, কিন্তু কুয়েরির মাধ্যমে তৈরি হওয়া একটি অবজেক্ট। Views সাধারণত ব্যবহার করা হয় জটিল কুয়েরি লুকিয়ে রাখতে, ডেটার নিরাপত্তা নিশ্চিত করতে এবং বিভিন্ন অ্যাপ্লিকেশন উপাদানের জন্য সহজ ডেটা অ্যাক্সেস প্রদান করতে।
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
view_name
: ভিউটির নাম।SELECT
: কুয়েরি যা ডেটা থেকে ফিল্টার করবে।FROM table_name
: ডেটা যেখান থেকে আসবে।WHERE condition
: ফিল্টার শর্ত যা ডেটাকে সীমাবদ্ধ করবে।ধরা যাক, আমাদের একটি students
টেবিল আছে, যেখানে ছাত্রদের নাম, বয়স এবং গ্রেডের তথ্য রয়েছে। যদি আমরা শুধুমাত্র গ্রেড 'A' থাকা ছাত্রদের একটি ভিউ তৈরি করতে চাই, তাহলে আমরা নিচের কুয়েরি ব্যবহার করব:
CREATE VIEW top_students AS
SELECT name, age, grade
FROM students
WHERE grade = 'A';
এটি একটি top_students নামের ভিউ তৈরি করবে, যা শুধু গ্রেড 'A' পাওয়া ছাত্রদের তথ্য দেখাবে।
ভিউ ব্যবহার করার জন্য সাধারণত একইভাবে একটি সিলেক্ট কুয়েরি ব্যবহার করা হয়:
SELECT * FROM top_students;
এটি top_students
ভিউ থেকে সমস্ত ছাত্রের তথ্য দেখাবে, যাদের গ্রেড 'A'।
বৈশিষ্ট্য | Triggers | Views |
---|---|---|
কাজ | নির্দিষ্ট ডেটাবেজ ইভেন্টের (INSERT/UPDATE/DELETE) পর বা আগে স্বয়ংক্রিয়ভাবে কাজ করে | ডেটাবেজের একাধিক টেবিলের থেকে ডেটা নিয়ে একটি ভার্চুয়াল টেবিল তৈরি করে |
পাঠযোগ্যতা | ট্রিগারটি ডেটাবেজে স্বয়ংক্রিয়ভাবে কাজ করে, ব্যবহারকারীকে দেখতে হয় না | ভিউটি সাধারণত সরাসরি ব্যবহারকারীর কাছে প্রদর্শিত হয় |
ডেটা আপডেট | ট্রিগার ব্যবহারকারীর ডেটা ইনসার্ট/আপডেট/ডিলিট করার সময় ডেটা পরিবর্তন করতে পারে | ভিউ শুধুমাত্র একটি ভার্চুয়াল টেবিল; ডেটা পরিবর্তন করতে পারেনা, তবে এটিকে আপডেট করা যায় যদি সেটি উপযুক্ত হয় |
ব্যবহার | ডেটাবেজ ইন্টিগ্রিটি রক্ষা, ডেটা প্রক্রিয়া অটোমেট করা | জটিল কুয়েরি সহজ করতে, নির্দিষ্ট ডেটা উপস্থাপন করা |
Triggers এবং Views উভয়ই H2 ডেটাবেজের শক্তিশালী বৈশিষ্ট্য। ট্রিগার ব্যবহার করে আপনি ডেটাবেজে ইভেন্ট ভিত্তিক স্বয়ংক্রিয় কাজ করতে পারেন, যেমন ডেটা ইনসার্ট করার আগে বা পরে কোনো অ্যাকশন নেওয়া। ভিউ ব্যবহার করে আপনি কমপ্লেক্স কুয়েরি লুকিয়ে রাখতে পারেন এবং ব্যবহারকারীকে সহজে প্রয়োজনীয় ডেটা অ্যাক্সেস প্রদান করতে পারেন। এগুলি ডেটাবেজ ম্যানেজমেন্টে কার্যকরী এবং পারফরম্যান্স বৃদ্ধি করতে সহায়ক।
common.read_more